/**
 * 路由跳转刷新工具
 * @author luguoxiang
 * @date 2024-06-19
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
import { onPageShow } from "@dcloudio/uni-app";

let metaRefresh = false;
/**
 * 监听刷新事件
 * @param call
 */
export function onRefresh(call: Function) {
  // 每当页面活动时（mounted、activated）查询是否需要刷新
  // 只读取一次，读取就删除
  onPageShow(() => {
	  if (metaRefresh) {
		  metaRefresh = false;
	    // 执行刷新
	    call();
	  }
  })
}

/**
 * 路由返回操作
 * @param {BackOptions | boolean} options 配置项，为false表示返回不刷新
 * @return 
 */ 
export function back(options?: BackOptions | boolean) {
	if (typeof options === 'boolean') {
		options = { refresh: options }
	}
	metaRefresh = options?.refresh !== false;
	uni.navigateBack(options)
}

/**
 * 设置刷新标志（必需在页面退出时调用）
 */
export function setRefresh() {
  metaRefresh = true;
}


interface BackOptions extends UniNamespace.NavigateBackOptions {
	/**
	 * 返回上级页面后是否刷新上级页面
	 */
	refresh?: boolean;
}